package com.baidu.iit.hib.util;

import java.util.logging.ConsoleHandler;
import java.util.logging.Handler;
import java.util.logging.LogManager;
import java.util.logging.Logger;

import javax.annotation.PostConstruct;

import org.slf4j.bridge.SLF4JBridgeHandler;

/**
 * 使用slf4j替换java.util.logging日志输出.
 * 
 * @author GuoLin
 *
 */
public class JulToSlf4jHelper {

	/**
	 * 主要通过调用{@link SLF4JBridgeHandler#install()}方法来代理jul日志.
	 * 但由于slf4j本身实现仅是对jul增加一个slf4j的handler而仍然会保留jul原有的{@link ConsoleHandler}}.
	 * 这里强行抹去jul所有的原有handler而仅增加slf4j的handler来实现避免重复显示日志的问题.
	 */
	@PostConstruct
	public static void install() {
		// 获取根日志
		Logger rootLogger = LogManager.getLogManager().getLogger("");
		
		// 强行抹去其所有的handlers
		for (Handler loggerHandler : rootLogger.getHandlers()) {
			rootLogger.removeHandler(loggerHandler);
		}
		
		// 加入slf4j的handler
		SLF4JBridgeHandler.install();
	}
}
